import re


# 对每一行进行匹配
def search(pattern, l, dict):
    m = re.search(pattern, l)
    if m:
        k = m.group()
        if k in dict:
            dict[k] += 1
        else:
            dict[k] = 1


# 显示前10次
def showfirsttimes(d: dict, tip):
    print('{}访问前10次'.format(tip))
    for n, (v, k) in enumerate(sorted(((v, k) for k, v in d.items()), reverse=True)):
        if n < 10:
            print('{} {}:{}----{}'.format(n,tip, k, v));
        else:
            break


# 存储IP次数的字典
ipdicts = dict()
# 存储页面次数的字典
pagedicts = dict()
# 读取文本中的行数
lines = []
# 读取文本中的行数
with open('access.log-20191119', mode='r') as f:
    lines = f.readlines()
for l in lines:
    search(R'(\d{1,3}.){3}\d{1,3}', l, ipdicts)
    search(R'http:.+?\.php', l, pagedicts)

showfirsttimes(ipdicts, 'IP')
showfirsttimes(pagedicts, 'Page')

# 思路是对的，ip的统计没有问题，页面的统计结果是错误的，尝试再修改一下。同时在提交代码的时候注意代码的缩进问题。